﻿using System.ComponentModel.DataAnnotations;

namespace OpusSuite.Models.Model.Shared
{
    public abstract class Address : ModelBase, IStaticBase
    {
        [Key]
        public int Id { get; set; }

        [StringLength(30)]
        public string Code { get; set; }

        public virtual ReportingStatus ReportingStatus { get; set; }

        [StringLength(256)]
        public string BuildingNumber { get; set; }
        [StringLength(256)]
        public string BuildingName { get; set; }
        [StringLength(256)]
        public string Line1 { get; set; }
        [StringLength(256)]
        public string Line2 { get; set; }
        [StringLength(256)]
        public string Line3 { get; set; }
        [StringLength(256)]
        public string Line4 { get; set; }
        [StringLength(256)]
        public string Suburb { get; set; }
        [StringLength(256)]
        public string TownCity { get; set; }
        [StringLength(256)]
        public string Area { get; set; }
        [StringLength(256)]
        public string Postcode { get; set; }
    }

    [Table("personaddress")]
    public class PersonAddress : Address
    {
    }

    [Table("organisationaddress")]
    public class OrganisationAddress : Address
    {
    }

    [Table("officeaddress")]
    public class OfficeAddress : Address
    {
    }

    [Table("propertyaddress")]
    public class PropertyAddress : Address
    {
    }
}
